# -*- coding: utf-8 -*-
# created by Src - 一路好时光




#内置函数地址
#https://docs.python.org/3/library/functions.html#ascii
# 1. abs # 求绝对值
print(abs(-5)-2)#3
# 2. all #Return True if bool(x) is True for all values x in the iterable.If the iterable is empty, return
# True.
a=[1,2,3,4,5,6,7,8,9]#所有值返回True，才返回True
#所有人核算检测，如果一个阳就要隔离
print(all(a))#True  #全部为True
# >>> bool(10)
# True
# >>> bool(0)
# False
# >>> bool(None)
# False
# >>> bool(-1)
# True
# >>> bool(True)
# True


# 3. any #Return True if bool(x) is True for any x in the iterable.If the iterable is empty, return
# False.
print(any(a))#任何一个值为True，结果为True
# 4. ascii #Return an ASCII-only representation of an object,ascii(“中国”) 返回”‘\u4e2d\u56fd’”
# 5. bin #返回整数的2进制格式
# 6. bool # 判断⼀个数据结构是True or False, bool({}) 返回就是False, 因为是空dict
# 7. bytearray # 把byte变成 bytearray, 可修改的数组
# 8. bytes # bytes(“中国”,”gbk”)
# 9. callable # 判断⼀个对象是否可调⽤
# 10. chr # 返回⼀个数字对应的ascii字符 ， ⽐如chr(90)返回ascii⾥的’Z’
print(chr(90))#Z
# 11. classmethod #⾯向对象时⽤，现在忽略
# 12. compile #py解释器⾃⼰⽤的东⻄，忽略
# 13. complex #求复数，⼀般⼈⽤不到
# 14. copyright #没⽤
# 15. credits #没⽤
# 16. delattr #⾯向对象时⽤，现在忽略
# 17. dict #⽣成⼀个空dict
print(dict())#{}
print(dict(name="alex",age=20))#{'name': 'alex', 'age': 20}
# 18. dir #返回对象的可调⽤属性 打印所有程序的变量名
name="alex"
age=20
print(dir())#['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'age', 'name']
print(__file__)#E:\PycharmProjects\pythonProject\day5-函数编程\08-常用内置函数.py

# 19. divmod #返回除法的商和余数 ，⽐如divmod(4,2)，结果(2, 0)
# 20. enumerate #返回列表的索引和元素，⽐如 d = [“alex”,”jack”]，enumerate(d)后，得到(0, ‘alex’)
for index,val in enumerate(range(10)):
    print(index,val)
# 0 0
# 1 1
# 2 2
# 3 3
for index,val in enumerate(["src","jack"]):
    print(index,val)
# 0 src
# 1 jack

# 21. eval #可以把字符串形式的list,dict,set,tuple,再转换成其原有的数据类型。
# 22. exec #把字符串格式的代码，进⾏解义并执⾏，⽐如exec(“print(‘hellworld’)”)，会解义⾥⾯的字符
# 串并执⾏
# 23. exit #退出程序
# 24. filter #对list、dict、set、tuple等可迭代对象进⾏过滤， filter(lambda x:x>10,
# [0,1,23,3,4,4,5,6,67,7])过滤出所有⼤于10的值
#filter，把列表里的每个元素交给第一个参数（函数）运行，若结果为真，则保留这个值。
l=list(range(10))
def compare(x):
    if x>5:
        return x
for i in filter(compare, l):
    print(i)
#过滤出为True的值
# 6
# 7
# 8
# 9

# 25. float #转成浮点
# 26. format #没⽤
# 27. frozenset #把⼀个集合变成不可修改的
# 28. getattr #⾯向对象时⽤，现在忽略
# 29. globals #打印全局作⽤域⾥的值
# 30. hasattr #⾯向对象时⽤，现在忽略
# 31. hash #hash函数
# 32. help
# 33. hex #返回⼀个10进制的16进制表示形式,hex(10) 返回’0xa’
# 34. id #查看对象内存地址
print(id(a))#2869754843520
# 35. input
# 36. int
# 37. isinstance #判断⼀个数据结构的类型，⽐如判断a是不是fronzenset, isinstance(a,frozenset) 返
# 回 True or False
# 38. issubclass #⾯向对象时⽤，现在忽略
# 39. iter #把⼀个数据结构变成迭代器，讲了迭代器就明⽩了
# 40. len
# 41. list
print(list())#[] #空列表
# 42. locals #打印当前程序（作用域）的所有变量名及变量值
print(locals())#打印所有变量名及变量值
#{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000020843CED3D0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'E:\\PycharmProjects\\pythonProject\\day5-函数编程\\08-常用内置函数.py', '__cached__': None, 'a': [1, 2, 3, 4, 5, 6, 7, 8, 9], 'name': 'alex', 'age': 20}

# 43. map # map(lambda x:x**2,[1,2,3,43,45,5,6,]) 输出 [1, 4, 9, 1849, 2025, 25, 36]
l=list(range(10))
print(l)
def calc(x):#只能定义一个参数
    return x**2
print(calc)#<function calc at 0x000002466682A200>
m=map(calc,l)#并没有开始执行 <map object at 0x000001FDE5759510>
for i in m:#真正循环的时候才执行 （迭代器）
    #每循环一次，就把列表里的每一个元素扔给calc函数执行
    print(i)
#执行结果
# 1
# 4
# 9
# 16
# 25
# 44. max # 求最⼤值
l=list(range(10))
print(max(l))#9
# 45. memoryview # ⼀般⼈不⽤，忽略
# 46. min # 求最⼩值
print(min(l))#0
# 47. next # ⽣成器会⽤到，现在忽略
# 48. object #⾯向对象时⽤，现在忽略
# 49. oct # 返回10进制数的8进制表示
# 50. open
# 51. ord # 返回ascii的字符对应的10进制数 ord(‘a’) 返回97，
print(ord("<"))#60
# 52. print
# 53. property #⾯向对象时⽤，现在忽略
# 54. quit
# 55. range
# 56. repr #没什么⽤
# 57. reversed # 可以把⼀个列表反转
# 58. round #可以把⼩数4舍5⼊成整数 ，round(10.15,1) 得10.2
print(round(3.1425926))#3
print(round(3.1425926,3))#3.143
# 59. set
# 60. setattr #⾯向对象时⽤，现在忽略
# 61. slice # 没⽤
# 62. sorted
# 63. staticmethod #⾯向对象时⽤，现在忽略
# 64. str
dd=str(list(range(10)))
print(dd)
print(type(dd))#<class 'str'>
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 65. sum #求和,a=[1, 4, 9, 1849, 2025, 25, 36],sum(a) 得3949
print(sum(l))#45
# 66. super #⾯向对象时⽤，现在忽略
# 67. tuple
# 68. type
# 69. vars #返回⼀个对象的属性，⾯向对象时就明⽩了
# 70. zip #可以把2个或多个列表拼成⼀个， a=[1, 4, 9, 1849, 2025, 25, 36]，b = [“a”,”b”,”c”,”d”]，
a=["src","zcx","sy"]
b=["1","2","3","4"]
for i in zip(a,b):#列表配对
    print(i)
# ('src', '1')
# ('zcx', '2')
# ('sy', '3')
#超出后不配对了  python2中，会用null代替

